package com.java1412.service.impl;

import com.java1412.generator.tables.Users;
import com.java1412.service.UserService;
import org.jooq.DSLContext;
import org.jooq.Record;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author java1412
 * @create 2021-05-20 13:54
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private DSLContext dsl;

    /**
     * 给Users表 重命名 u。（类似于sql语句中的users as u）
     * 注意一点：这个User类是逆向生成的tables包下的，不是pojos包下的Users实体类，
     * （逆向工程它会生成两个Users类，一个在pojos下，一个在tables下）
     */
    Users u = Users.USERS.as("u");

    /**
     * 删除
     *
     * @param id
     */
    @Override
    public void delete(int id) {
        dsl.delete(u).where(u.ID.eq(id));
    }

    /**
     * 增加
     *
     * @param users
     */
    @Override
    public void insert(com.java1412.generator.tables.pojos.Users users) {
        dsl.insertInto(u).columns(u.USERNAME, u.PASSWORD)
                .values(users.getUsername(), users.getPassword())
                .execute();
    }

    /**
     * @param users
     * @return
     */
    @Override
    public int update(com.java1412.generator.tables.pojos.Users users) {
        dsl.update(u).set((Record) users);
        return 0;
    }

    /**
     * 查询单个
     *
     * @param id
     * @return
     */
    @Override
    public com.java1412.generator.tables.pojos.Users selectById(int id) {
        List<com.java1412.generator.tables.pojos.Users> usersList = dsl.select(u.ID, u.USERNAME, u.PASSWORD)
                .from(u)
                .where(u.ID.eq(id))
                .fetch()
                .into(com.java1412.generator.tables.pojos.Users.class);
        return usersList.get(0);
    }

    /**
     * 查询全部列表
     *
     * @param pageNum
     * @param pageSize
     * @return
     */
    @Override
    public List<com.java1412.generator.tables.pojos.Users> selectAll(int pageNum, int pageSize) {
        return dsl.select()
                .from(u)
                //id倒序
                .orderBy(u.ID.desc())
                // 分页
                .limit(0)
                // 分页
                .offset(10)
                .fetch().into(com.java1412.generator.tables.pojos.Users.class);
    }
}
